//vue类的实现
class Vue {
    //data解构赋值
    constructor({ el, data = { age: 30 } }) {
        //存储一下
        this.$el = document.getElementById(el);
        this.$data = data;
        //init的就是将data的每一项属性挂载到this上
        this.init();
        //将所有对象的key和vules
    }
    init() {
        Object.keys(this.$data).forEach((key) => {
            //key只是变量名，只能用中款号的形式添加
            // this[key] = this.$data[key];
            //这个地方在挂载到this上的时候给挂载属于添加劫持
            this.observe(this, key, this.$data[key]);
        });
    }
    //被劫持的属性会变成访问器属性
    observe(target, key, value) {
        Object.defineProperty(target, key, {
            get() {
                return value;
            },
            set(newValue) {
                value = newValue;
            },
        });
    }
}
